# Copyright (c) Stanford University, The Regents of the University of
#               California, and others.
#
# All Rights Reserved.
#
# See Copyright-SimVascular.txt for additional details.
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject
# to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

"""
This module is used to store the values of parameters set on the command line.
"""

class Parameters():
    """ 
    The Parameter class stores the values of input parameters.
    """
    FILE_NAME_SEP = "_"
    DATA_FILE_EXTENSION = ".dat"

    def __init__(self):
        self.data_names = None

        self.output_directory = None
        self.results_directory = None
        self.plot_results = None

        ## Solver parameters.
        self.solver_file_name = None
        self.model_name = None
        self.model_order = None
        self.num_steps = None
        self.time_step = None
        self.time_range = None

        ## Segment names and booleans for selecting segements.
        self.segment_names = None
        self.all_segments = False
        self.outlet_segments = False
        self.select_segment_names = False

        self.output_file_name = None
        self.output_format = "csv"

        # model input
        self.oned_model = '1d_model.vtp'
        self.centerlines_file = None
        self.volume_mesh_file = None
        self.walls_mesh_file = None

        self.display_geometry = False
        self.node_sphere_radius = 0.1
